#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/wait.h>

int main()
{
    pid_t ret = fork();
    if(ret < 0)
    {
        perror("fork false");
        exit(1);
    }

    else if(ret == 0)
    {
        int cur = 5;
        while(cur)
        {
            printf("我是子进程：%d\n",cur--);
            sleep(1);
        }
        int* p = NULL;
        *p = 8;
       // exit(0);
    }

    else 
    {
        int status = 0;
        pid_t res = waitpid(ret,&status,0);
       if(WIFEXITED(status))
       {
           printf("子进程正常退出：%d status:%d\n",WEXITSTATUS(status),status);
       }
       else 
       {
           printf("子进程异常退出：%d status:%d\n",WEXITSTATUS(status),status);
       }
        // if(res > 0)
       // {
       //     printf("等待成功！退出码：%d 信号码：%d\n",(status >> 8)&0xff, status&0x7f);
       // }
    }
    return 0;
}
